問題解説: IPv6 筆記

1問目

問題文

IPv6問題 No.1 ステートレスアドレス自動設定(SLAAC)

以下の選択肢のうち、ノード起動時におけるSLAACの順序として正しいものを選択してください。
a. ノードはリンクローカルユニキャストアドレスを生成する
b. ノードはユニークローカルユニキャストアドレスを生成する
c. ノードはグローバルユニキャストアドレスを生成する
d. ノードはマルチキャストでRSパケットを送信する
e. ノードはエニーキャストでRSパケットを送信する
f. ルータはRSパケットを受け取ったらRAパケットを返信する
g. ルータはRSパケットを受け取ったらDHCPv6でアドレスを作りRAパケットで返信する

選択肢

  • b → e → f → c
  • a → e → f → b
  • a → d → f → b
  • a → d → g → c
  • a → d → f → c
  • a → e → g → b

解説

IPv6ではDHCPがなくてもIPアドレスとデフォルトゲートウェイが設定できるようになりました。
この問題はそのステートレスアドレス自動設定(SLAAC)の手順に関するものです。
選択肢がやたらと多いのは勘や順序の傾向から適当に解くのを防ぐためです。
その結果としてですが正解が2つできてしまいました、採点中に気がついたのでどちらでも得点が入っていますが、競技中に悩んだ方は無駄に時間を取らせてしまい申し訳ないです。

さて正解ですが、以下の2つです。

  • a → d → f → c
  • a → d → f → b

文章にすると以下になります。
1. ノードはまず、リンクローカルユニキャストアドレスを生成する
2. リンクローカル全ルータマルチキャストでRS(ルータ要請)パケットを送信する
3. ルータがRSパケットを受け取るとリンクローカルユニキャストでRA(ルータ応答)パケットを返信する
4. ノードはRAからグローバル(or ユニーク)ユニキャストアドレスを生成する

講評

調べれば簡単に分かる問題なので正答率は高かったです。

2問目

問題文

IPv6問題 No.2 EUI-64

以下のMACアドレスからユニキャストアドレスのインターフェースIDを自動生成した場合に適切なものを選択肢から選んでください。

94:de:80:6c:8e:4d

選択肢

  • fe80::94de:80ff:ff6c:8e4d
  • 94de:80ff:fe6c:8e4d
  • ffff:94de:806c:8e4d
  • 96de:80ff:fe6c:8e4d
  • 94de:80ff:ff6c:8e4d

解説

IPv6のSLAACではEUI-64でMACアドレスを変換し使用することによってユニークなアドレスを生成できます。
IPv6のアドレスはプレフィックスとインターフェースIDからなり、これはIPv4のネットワークアドレスとホストアドレスに対応します。
この問題はEUI-64でMACアドレスからインターフェースIDを生成した場合どうなるかを答えるものです。

変換の手順は以下です。
1. MACアドレスを24ビットずつに分割(半分)
2. 分割した間に0xfffeを挿入
3. 7ビット目を反転

正解は 96de:80ff:fe6c:8e4d です。

講評

不正解の解答ではステップ3を忘れているケースや、ステップ2で0xfffeではなく0xffffを挿入しているケースが多く見られました。
ちなみに検索するとEUI-64コンバーターが出てきます。
http://silmor.de/ipaddrcalc.html#ip6

この手の計算問題は自分でやると間違えるのでコンバータに任せましょう。

3問目

問題文

IPv6問題 No.3 IPv6豆知識

以下のIPv6に関する文章の中から最も正しいものを選んでください。

選択肢

  • IPv6ではアドレス解決にARPv6を使う
  • RA(Router Advertisement)パケットではDNSアドレスを通知することができない
  • ICMPv6はDos攻撃に利用されるため常にフィルタしたほうが良い
  • ユニークローカルアドレスはルータを超えられる
  • IPv6にはIPv4射影アドレスがあるので、宛先ノードがIPv6非対応でもIPv6で通信することができる

解説

IPv6について雑多に知識を付けてもらおうと思い出題しました。
選択肢の中で最も正しいのは ユニークローカルアドレスはルータを超えられる です。

それぞれの選択肢を解説していきます。

IPv6ではアドレス解決にARPv6を使う

IPv6ではL2でのアドレス解決にARPではなくICMPv6を使います。

RA(Router Advertisement)パケットではDNSアドレスを通知することができない

策定当初はRAでDNSアドレスを配布することはできませんでしたが現在は可能です。
ただし実装されているとは限りません。
不幸なことに、DNSアドレス配布周りでは幾つかの規格があり、端末とルータによって実装がバラバラです。

ICMPv6はDos攻撃に利用されるため常にフィルタしたほうが良い

上にも書いてありますが、ICMPv6をフィルタするとL2でのアドレス解決ができない、SLAACが使えないなどの問題があります。

ユニークローカルアドレスはルータを超えられる

リンクローカルアドレスはルータ超えできませんが、ユニークローカルアドレスはルータを超えられます。
これが正解です。

IPv6にはIPv4射影アドレスがあるので、宛先ノードがIPv6非対応でもIPv6で通信することができる

IPv4射影アドレスを使うとアプリケーションはIPv4アドレスをIPv6アドレスとして処理できますが、実際の通信ではIPv4を使います。
そのため、宛先ノードがIPv6非対応でもIPv6通信ができるというのは厳密には間違いです。

講評

おおよその正否は調べれば分りますが、「射影アドレス」と「ルータ越え」のどちらにするかで悩んだチームが多いようです。
この場合、問題文に「最も正しい」とあるので少し悩みどころのある前者ではなく、後者が正解となります。